/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mindbox.mueblesalpes.presentacion.compras;

import com.mindbox.mueblesalpes.negocio.compras.ComprasMock;
import com.mindbox.mueblesalpes.negocio.compras.ICompras;
import com.mindbox.mueblesalpes.negocio.entity.Mueble;
import com.mindbox.mueblesalpes.presentacion.sesion.SessionInfo;
import com.mindbox.mueblesalpes.presentacion.utils.ReglasNavegacion;
import com.mindbox.mueblesalpes.presentacion.utils.RequestParameters;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 *
 * @author jsanchez
 */
public class CompraBackingBean {

    private List<Mueble> muebles;
    private Mueble muebleSeleccionado;
    private ICompras compras;

    /** Creates a new instance of CompraBackingBean */
    public CompraBackingBean() {
        compras = new ComprasMock();
        this.muebles = compras.obtenerProductosParaLaVenta();
    }

    public List<Mueble> getMuebles() {
        return muebles;
    }

    public void setMuebles(List<Mueble> muebles) {
        this.muebles = muebles;
    }

    public String verCarrito(){
        return ReglasNavegacion.agregar_al_carrito3.toString();
    }

    /**
     * Metodo que se invoca cuando se selecciona un producto en la página.
     * @return
     */
    public String agregar() {
        String reglaNavegacion = "";

        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession httpSession = (HttpSession) context.getExternalContext().getSession(true);
        SessionInfo sesion = (SessionInfo) httpSession.getAttribute(SessionInfo.class.getName());
        if (sesion == null) {
            sesion = new SessionInfo();
            httpSession.setAttribute(SessionInfo.class.getName(), sesion);
        }

        sesion.setMuebleSeleccionado(muebleSeleccionado);

        if (sesion.getUsuario() == null) {
            // No se ha logeado
            //Se envía  a la página de logeo
            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            httpSession.setAttribute(RequestParameters.next_page.name(), ReglasNavegacion.agregar_al_carrito.name());
            reglaNavegacion = ReglasNavegacion.autenticacion_compra.name();
        } else if (sesion.getCliente() == null) {
            //Error el usuario no tiene registrado un cliente.
            //Se envía  a la página de registro cliente
            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            httpSession.setAttribute(RequestParameters.next_page.name(), ReglasNavegacion.agregar_al_carrito.name());
            reglaNavegacion = ReglasNavegacion.registro_compra.name();
        } else {
            //El usuario ya está logeado y tiene un cliente asociado
            //Se agrega en el carrito de compras
            reglaNavegacion = ReglasNavegacion.agregar_al_carrito3.name();
        }

        return reglaNavegacion;
    }

    public Mueble getMuebleSeleccionado() {
        return muebleSeleccionado;
    }

    public void setMuebleSeleccionado(Mueble muebleSeleccionado) {
        this.muebleSeleccionado = muebleSeleccionado;
    }
}